<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 * @version    $Id: AuthStorage.php,v 1.2 2008/06/16 04:01:15 jack_xie Exp $
 */


/**
 * @see Zend_Auth_Storage_Interface
 */
require_once 'Zend/Auth/Storage/Interface.php';


/**
 * @see Zend_Session
 */
require_once 'Zend/Session.php';


/**
 * @category   Zend
 * @package    Zend_Auth
 * @subpackage Zend_Auth_Storage
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
class TT_Auth_Storage implements Zend_Auth_Storage_Interface
{
    /**
     * Default session namespace
     */
    const NAMESPACE_DEFAULT = 'Zend_Auth';

    /**
     * Default session object member name
     */
    const MEMBER_DEFAULT = 'user';

    /**
     * Object to proxy $_SESSION storage
     *
     * @var Zend_Session_Namespace
     */
    protected $_session;

    /**
     * Session namespace
     *
     * @var mixed
     */
    protected $_namespace;

    /**
     * Session object member
     *
     * @var mixed
     */
    protected $_member;

    /**
     * Sets session storage options and initializes session namespace object
     *
     * @param  mixed $namespace
     * @param  mixed $member
     * @return void
     */
    public function __construct($namespace = self::NAMESPACE_DEFAULT, $member = self::MEMBER_DEFAULT)
    {
        $this->_namespace = $namespace;
        $this->_member    = $member;
        $this->_session   = new Zend_Session_Namespace($this->_namespace);
    }

    /**
     * Returns the session namespace
     *
     * @return string
     */
    public function getNamespace()
    {
        return $this->_namespace;
    }

    /**
     * Returns the name of the session object member
     *
     * @return string
     */
    public function getMember()
    {
        return $this->_member;
    }

    /**
     * Defined by Zend_Auth_Storage_Interface
     *
     * @return boolean
     */
    public function isEmpty()
    {		
		if(empty($this->_session->{$this->_member}) && empty($_COOKIE[$this->_member])){
			return true;
		}else{
			return false;
		}
    }

    /**
     * Defined by Zend_Auth_Storage_Interface
     *
     * @return mixed
     */
    public function read()
    {		
        if (!empty($this->_session->{$this->_member})) {
			return $this->_session->{$this->_member};
		} elseif (!empty($_COOKIE[$this->_member])) {
			$this->_session->{$this->_member} = unserialize(base64_decode($_COOKIE[$this->_member]));					
			return $this->_session->{$this->_member};
		} else {
			return null;
		}
    }

    /**
     * Defined by Zend_Auth_Storage_Interface
     *
     * @param  mixed $contents
     * @return void
     */
    public function write($name)
    {	
		//get user info
		$dbAdapter = Zend_Registry :: get('db_adapter');
		$userInfo = $dbAdapter->fetchRow("select id, name, tt_team_id from tt_user where name='".$name."' limit 1");
		$user['userId'] = $userInfo['id'];
		$user['userName'] = $userInfo['name'];
		$user['itemId'] = $userInfo['tt_team_id'];		

		//get role info
		$roles = $dbAdapter->fetchAll("select r.id, r.name from tt_rsh_user_role ur, tt_role r where ur.role_id = r.id and ur.user_id=".$user['userId']);
		if (is_array($roles) && count($roles)>0) {
			$i=0;
			foreach ($roles as $role) {
				$user['roles'][$i]['id'] = $role['id'];
				$user['roles'][$i]['role'] = $role['name'];		
				$i++;	
			}
		} else {
			$user['roles'] = array();
		}
		
		$this->_session->{$this->_member} = $user;
		setcookie($this->_member, base64_encode(serialize($user)), time()+3600*24*365,'/');
		//echo "<pre>"; print_r($user); echo "</pre>";exit;
    }

    /**
     * Defined by Zend_Auth_Storage_Interface
     *
     * @return void
     */
    public function clear()
    {
        unset($this->_session->{$this->_member});
		setcookie($this->_member, '', time()-1);
    }
}
